#include <iostream>
#include <cstdio>
#include <algorithm>
#include <map>
#include <cstring>
#include <vector>
#include<queue>
#include<stack>
using namespace std;
int main()
{
	int n;
	int op, x;
	stack<int>a;
	cin>>n;
	while (n--)
	{
		cin >> op;
		if (op == 0)
		{
			cin >> x;
			if (!a.empty()) {
				x = max({ a.top(), x });
			}
			a.push(x);
		}
		else if (op == 1)
		{
			if (!a.empty())
			{
				a.pop();
			}
		}
		else
		{
			if (a.empty())
				cout << "0" << endl;
			else {
				cout << a.top() << endl;
			}
		}
	}
	return 0;
}